// 引入用户服务
const userService = require('../../services/user');

Page({
  data: {
    isAgree: true,
    isLoading: false
  },

  onLoad() {
    console.log('登录页面加载');
  },

  // 切换是否同意协议
  toggleAgree() {
    this.setData({
      isAgree: !this.data.isAgree
    });
  },

  // 处理用户授权
  onGetUserInfo(e) {
    console.log('获取用户信息:', e.detail);
    
    if (!this.data.isAgree) {
      wx.showToast({
        title: '请先同意服务协议和隐私政策',
        icon: 'none'
      });
      return;
    }

    // 用户拒绝授权
    if (!e.detail.userInfo) {
      wx.showToast({
        title: '您拒绝了授权，部分功能将无法使用',
        icon: 'none'
      });
      return;
    }
    
    // 防止重复点击
    if (this.data.isLoading) {
      return;
    }
    
    this.setData({
      isLoading: true
    });

    // 显示加载中
    wx.showLoading({
      title: '登录中...',
      mask: true
    });

    // 获取微信登录code
    wx.login({
      success: (res) => {
        console.log('微信登录成功，获取到code:', res.code);
        if (res.code) {
          // 构建登录参数
          const loginData = {
            code: res.code,
            nickname: e.detail.userInfo.nickName,
            avatar: e.detail.userInfo.avatarUrl,
            gender: e.detail.userInfo.gender
          };
          
          console.log('准备发送登录请求，参数:', loginData);

          // 调用登录接口
          userService.login(loginData).then(result => {
            console.log('登录成功，返回数据:', result);
            
            // 兼容新的响应结构
            let userData;
            
            // 情况1：标准结构返回 result.data
            if (result.code === 200 && result.data) {
              userData = result.data;
            } 
            // 情况2：直接返回数据
            else if (!result.code) {
              userData = result;
            }
            
            console.log('处理后的用户数据:', userData);
            
            // 确保token存在
            if (!userData || !userData.token) {
              console.error('登录返回数据中没有token或数据格式不正确');
              throw new Error('登录失败，请重试');
            }
            
            // 保存用户信息和token
            getApp().saveUserInfo(userData.token, userData.user);
            
            // 隐藏加载中
            wx.hideLoading();
            
            // 跳转到首页
            wx.switchTab({
              url: '/pages/index/index'
            });
          }).catch(err => {
            console.error('登录失败', err);
            wx.hideLoading();
            wx.showToast({
              title: err.message || '登录失败，请重试',
              icon: 'none'
            });
            
            this.setData({
              isLoading: false
            });
          });
        } else {
          console.error('微信登录失败', res);
          wx.hideLoading();
          wx.showToast({
            title: '微信登录失败，请重试',
            icon: 'none'
          });
          
          this.setData({
            isLoading: false
          });
        }
      },
      fail: (err) => {
        console.error('微信登录失败', err);
        wx.hideLoading();
        wx.showToast({
          title: '微信登录失败，请重试',
          icon: 'none'
        });
        
        this.setData({
          isLoading: false
        });
      }
    });
  }
}); 